"""
Основнвя информация о сборке Чио.

- количество команд для пользователей/администраторов
- количество обработчиков команд
- имя сборки
- время хоста, время запуску, сколько работает
- имена Чио
- колиество обработчиков и проверяющих функций
- сколько загржено плагинов
- дополнительные префиксы команд

Author: Milinuri Nirvalen
Ver: 1.5.1 (8)
"""

from chiori import Config
from chiori import Plugin

import time


p = Plugin(name='информация',
	desc='информация о сборке Чио')


# func
# ====

def count_commands(app):
	text = ''

	counters = {'a':0, 'ah':0, 'u':0, 'uh':0}

	for k, v in app.routers.items():
		if v["admins"]:
			names = ['a', 'ah']
		else:
			names = ['u', 'uh']

		counters[names[0]] += 1
		counters[names[1]] += len(v["cmds"])

	text += f'''\n🌲 {counters["a"]} для администраторов ({counters["ah"]} обработчиков)
🌲 {counters["u"]} для пользователей ({counters["uh"]} обработчиков)'''
	return text

def count_hendlers(app):
	text = ''
	for k, v in app.handlers.items():
		text += f' / {k[0]}: {len(v)}'
	return text


# commands
# ========

@p.command('инфо', 'информация', 'info', usage='информация о сборке')
async def chioStats(event, ctx):
	c = Config("chiori").group_data
	lsp = len(ctx.app.sp)
	text = f'''🌍 о боте / статистика 🌍
🌲 имя: {c["name"]} V{c["ver"]}
🌲 функционал Чио зависит от загруженных плагинов.

[ ядро ]
🌲 время хоста: {ctx.strtime} ({ctx.now - int(ctx.app.start_time)} с. назад)
🌲 время запуска: {time.ctime(ctx.app.start_time)}
🌲 имена: {', '.join(k for k in c["names"]) if lsp <= 15 else f"{lsp}"}
🌲 обработчики: {count_hendlers(ctx.app)}
🌲 проверяющих функций: {len(ctx.app.check_funcs)}
🌲 загружено плагинов: {len(ctx.app.plugins)}
🌲 доп.префиксы команд: {', '.join(ctx.app.sp.keys())}

[ команды ]
🌲 команд: {len(ctx.app.routers)} ({len(ctx.app.triggers)} обработчиков)'''

	text += count_commands(ctx.app)
	await ctx.message(text)
